# 作者: 菅世博
# 2025年02月20日16时40分31秒
# 512326042@qq.com
# class MusicPlayer(object):
#     def __new__(cls, *args, **kwargs):
#         #1.创建对象时，new方法被自动调用
#         print('创建对象时，分配空间')
#         #2.为对应的对象分配空间
#         instance = super().__new__(cls)
#         #3.返回对象的引用
#         return instance
#
#     def __init__(self):
#         print('播放器初始化')


class MusicPlayer2(object):
    instance = None
    init_flag = False

    def __new__(cls, *args, **kwargs):
        # 1. 判断类属性是否已经被赋值
        if cls.instance is None:
            cls.instance = super().__new__(cls)
        # 2. 返回类属性的单例引用
        return cls.instance

    def __init__(self):
        if not MusicPlayer2.init_flag:
            print('播放器初始化')
            MusicPlayer2.init_flag = True



if __name__ == '__main__':
    player1 = MusicPlayer2()
    player2 = MusicPlayer2()
    print(id(player1) == id(player2))
    print(player1)
    print(player2)